#pragma once

#include "Syntax/Kind.hpp"
#include "Syntax/Token.hpp"
#include "Syntax/Statement/Statement.hpp"

#include <string>
#include <vector>

class BlockStatementSyntax : public StatementSyntax
{
public:
    SharedToken OpenBraceToken;
    std::vector<SharedStatement> Statements;
    SharedToken CloseBraceToken;

public:
    BlockStatementSyntax(SharedToken openBrace, std::vector<SharedStatement> statements, SharedToken closeBrace)
        : StatementSyntax(SyntaxKind::BlockStatement, "BlockStatement"),
          OpenBraceToken(openBrace), Statements(statements), CloseBraceToken(closeBrace) {}
    ~BlockStatementSyntax() = default;
};

// 定义类型;
typedef std::shared_ptr<BlockStatementSyntax> SharedBlockStatement;
